package com.piggy.logi.sys.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

@Data
@NoArgsConstructor
@ApiModel("货源订单")
@Accessors(chain = true)
public class LogiGoodOrderVo {

    /** $column.columnComment */
    @ApiModelProperty("货源订单id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long goodOrderId;

    @ApiModelProperty("订单类型：0.线下订单 1.线上订单")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer goodOrderType;

    @ApiModelProperty(value = "部门ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deptId;

    @ApiModelProperty("订单号")
    private String orderCode;

    /** 母单（不为0则是拆单，根节点订单） */
    @ApiModelProperty("母单（不为0则是拆单，根节点订单）")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long mainParentId;

    /** 母单（不为0则是拆单，上级节点订单） */
    @ApiModelProperty("母单（不为0则是拆单，上级节点订单）")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long parentId;

    /** 发货方ID */
    @ApiModelProperty("发货方ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shipId;

    /** 收货方ID */
    @ApiModelProperty("收货方ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deliveryId;

    /** 所属项目 */
    @ApiModelProperty("所属项目")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long projectId;

    /** 货主订单号 */
    @ApiModelProperty("货主订单号")
    private String ownerOutCode;

    @ApiModelProperty("始发地区县ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer originDistractId;

    @ApiModelProperty("始发地详细")
    private String originAddress;

    @ApiModelProperty("始发地经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Float originLng;

    @ApiModelProperty("始发地纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Float originLat;

    @ApiModelProperty("目的地区县ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer destinationDistractId;

    @ApiModelProperty("目的地详细")
    private String destinationAddress;

    @ApiModelProperty("目的地经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Float destinationLng;

    @ApiModelProperty("目的地纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Float destinationLat;

    /** 计划发车时间 */
    @ApiModelProperty("计划发车时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date departureTime;

    /** 计划到达时间 */
    @ApiModelProperty("计划到达时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date arrivalTime;

    /** 提货单号 */
    @ApiModelProperty("提货单号")
    private String pickupOrderNo;

    /** 预约提货时间 */
    @ApiModelProperty("预约提货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date pickupTime;

    /** 预约送货时间 */
    @ApiModelProperty("预约送货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryTime;

    /** 订单附件 */
    @ApiModelProperty("订单附件")
    private String orderAttach;

    /** 合同附件 */
    @ApiModelProperty("合同附件")
    private String contractAttach;

    /** 发票附件 */
    @ApiModelProperty("发票附件")
    private String invoiceAttach;

    /** 其他材料 */
    @ApiModelProperty("其他材料")
    private String otherFiles;

    /** 发货网点ID */
    @ApiModelProperty("发货网点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer shipNetId;

    /** 紧急程度（0正常1加急） */
    @ApiModelProperty("紧急程度（0正常1加急）")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer urgencyDegree;

    /** 发货提货方式 */
    @ApiModelProperty("发货提货方式")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer shipPickUpWay;

    /** 到达提货方式 */
    @ApiModelProperty("到达提货方式")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer arrivalPickUpWay;

    /** 相关服务 */
    @ApiModelProperty("相关服务")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer relatedService;

    /** 相关服务说明 */
    @ApiModelProperty("相关服务说明")
    private String relatedServiceDesc;

    /** 发货方联系人 */
    @ApiModelProperty("发货方联系人")
    private String shipContacts;

    /** 发货方联系电话 */
    @ApiModelProperty("发货方联系电话")
    private String shipContactTel;

    /** 收货方联系人 */
    @ApiModelProperty("收货方联系人")
    private String deliveryContacts;

    /** 收货方联系电话 */
    @ApiModelProperty("收货方联系电话")
    private String deliveryContactTel;

    @ApiModelProperty("订单状态")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer status;

    @ApiModelProperty("关联运单id")
    private Long waybillId;

    @ApiModelProperty("运单编号")
    private String outCode;

    @ApiModelProperty("支付金额")
    private BigDecimal payAmount;

    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    /** 备注 */
    @ApiModelProperty("备注")
    private String remark;

    @Excel(name = "创建时间")
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @Excel(name = "创建人")
    @ApiModelProperty("创建人")
    private String createBy;

    @Excel(name = "更新时间")
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @Excel(name = "更新人")
    @ApiModelProperty("更新人")
    private String updateBy;
}
